<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <child></child>
    </div>
    <script src="../js/vue.js"></script>
    <script>
        /**
        父组件向子组件传值的方法有四种
        所谓父子组件传值 其实是让子组件能够使用父组件的数据

        vuex
        */
        const child = {
            // props: ['aaa'], // props的值可以是一个数组 接收的是自定义的属性
            props: {
                aaa: {
                    type: String, // type定义传递的数据的类型
                    required: false, // 定义数据是必须传递的 意思是自定义属性在组件上必须存在
                    default: '你是个麻瓜' // 默认值是在属性未传递或者属性的值是undefined的时候才会生效
                },

                obj: {
                    type: Object,
                    default: () => {
                        return {}
                    }
                }
            },
            inject: ['msg'],
            template: `
                <div>{{msg}}</div>
            `,
            created() {
                // console.log(this.$parent.msg); // 通过$parent可以获取父组件的实例对象
            },
        }
        new Vue({
            el: "#app",
            // provide 提供 提供数据供其他组件使用
            provide: { // 但是这种方法建议四封装高阶组件时使用
                msg: 'hello world',
            },
            // data: {
            //     msg: 'hello world',

            //     obj: {

            //     }
            // },
            components: {
                child
            }
        })
    </script>
</body>
</html>